package br.edu.universo.si.projeto2.infojob.server.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanEmpresaPerfil;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanEmpresaAssinante;
import br.edu.universo.si.projeto2.infojob.server.Database;

/**
 * Classe de persistência do Perfil de Empresas.
 */
public class PEmpresaPerfil
{
	/**
	 * Cadastra um perfil.
	 * @author Marcelo M. Fleury
	 * @param bEmpresaPerfil
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public static void cadastrarEmpresaPerfil(BeanEmpresaPerfil bEmpresaPerfil) throws ClassNotFoundException, SQLException
	{
		Database database = Database.getInstance();
		String SQL = "INSERT INTO infojob.tb_empresa_perfil(id_empresa, id_setor_atuacao, metas, total_funcionarios, " +
				"fundacao, historia, total_filiais, website) VALUES(?, ?, ?, ?, to_date(?, 'dd/mm/YYYY'), ?, ?, ?)";

		PreparedStatement pStmt = database.getPreparedStatement(SQL);

		pStmt.setInt(1, bEmpresaPerfil.getIdEmpresa());
		pStmt.setInt(2, bEmpresaPerfil.getIdSetorAtuacao());
		pStmt.setString(3, bEmpresaPerfil.getMetas());
		pStmt.setInt(4, bEmpresaPerfil.getTotalFuncionarios());
		pStmt.setString(5, bEmpresaPerfil.getFundacao());
		pStmt.setString(6, bEmpresaPerfil.getHistoria());
		pStmt.setInt(7, bEmpresaPerfil.getTotalFiliais());
		pStmt.setString(8, bEmpresaPerfil.getWebsite());

		pStmt.executeUpdate();
	}

	/**
	 * Busca um perfil pelo ID da Empresa.
	 * @author Marcelo M. Fleury
	 * @param idEmpresa
	 * @return BeanEmpresaPerfil
	 * @throws ClassNotFoundException
	 * @throws Exception
	 */
	public static BeanEmpresaPerfil getEmpresaPerfil(Integer idEmpresa)throws ClassNotFoundException, Exception
	{
		Database database = Database.getInstance();
		
		String query = ("SELECT * FROM infojob.tb_empresa_perfil WHERE id_empresa = ?; ");
		PreparedStatement pStmt = database.getPreparedStatement(query);
		
		pStmt.setInt(1, idEmpresa);

		ResultSet rs = pStmt.executeQuery();
		
		if(rs.next())
		{
			BeanEmpresaPerfil bEmpresaPerfil = new BeanEmpresaPerfil();			

			bEmpresaPerfil.setId(rs.getInt("id"));
			bEmpresaPerfil.setIdEmpresa(idEmpresa);
			bEmpresaPerfil.setIdSetorAtuacao(rs.getInt("id_setor_atuacao"));
			bEmpresaPerfil.setMetas(rs.getString("metas"));
			bEmpresaPerfil.setTotalFuncionarios(rs.getInt("total_funcionarios"));
			bEmpresaPerfil.setFundacao(rs.getString("fundacao"));
			bEmpresaPerfil.setHistoria(rs.getString("historia"));
			bEmpresaPerfil.setTotalFiliais(rs.getInt("total_filiais"));
			bEmpresaPerfil.setWebsite(rs.getString("website"));

			BeanEmpresaAssinante bEmpresaAssinante = PEmpresa.getEmpresaById(bEmpresaPerfil.getIdEmpresa());
			bEmpresaPerfil.setBEmpresaAssinante(bEmpresaAssinante);

			return bEmpresaPerfil;
		}

		return null;
	}

	/**
	 * Altera o perfil de uma empresa.
	 * @author Marcelo M. Fleury
	 * @param bEmpresaPerfil
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public static void alterarEmpresaPerfil(BeanEmpresaPerfil bEmpresaPerfil) throws ClassNotFoundException, SQLException
	{
		Database database = Database.getInstance();

		PreparedStatement pStmt = database.getPreparedStatement("UPDATE infojob.tb_empresa_perfil " +
				"SET id_setor_atuacao = ?, metas = ?, total_funcionarios = ?, " +
				"fundacao = to_date(?, 'dd/mm/YYYY'), historia = ?, total_filiais = ?, website = ? WHERE id_empresa = ?");
		pStmt.setInt(1, bEmpresaPerfil.getIdSetorAtuacao());
		pStmt.setString(2 , bEmpresaPerfil.getMetas());
		pStmt.setInt(3 , bEmpresaPerfil.getTotalFuncionarios());
		pStmt.setString(4 , bEmpresaPerfil.getFundacao());
		pStmt.setString(5 , bEmpresaPerfil.getHistoria());
		pStmt.setInt(6 , bEmpresaPerfil.getTotalFiliais());
		pStmt.setString(7 , bEmpresaPerfil.getWebsite());
		pStmt.setInt(8 , bEmpresaPerfil.getIdEmpresa());

		pStmt.executeUpdate();	
	}

	/**
	 * Deleta o perfil de uma empresa.
	 * @author Marcelo M. Fleury
	 * @param bEmpresaAssinante
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public static void deletarPerfilEmpresa(BeanEmpresaAssinante bEmpresaAssinante) throws ClassNotFoundException, SQLException
	{
		Database database = Database.getInstance();

		PreparedStatement pStmt = database.getPreparedStatement("DELETE FROM infojob.tb_empresa_perfil WHERE id_empresa = ?; ");
		pStmt.setInt(1, bEmpresaAssinante.getId());

		pStmt.executeUpdate();
	}
}